package com.moss.cloud.common.core.utils;

import com.moss.cloud.common.core.exception.BaseException;
import com.moss.cloud.common.core.exception.SystemErrorType;

import java.math.BigInteger;
import java.security.MessageDigest;

/**
 * MD5算法
 *
 * @author 瑾年
 * @date 2023年11月20日
 */
public class MD5Util {
    /**
     * MD5算法加密算法
     *
     * @param input
     * @return
     */
    public static String encryptToMD5(String input) {
        try {
            // 创建MD5加密算法实例
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 计算MD5摘要
            byte[] messageDigest = md.digest(input.getBytes());
            // 将byte数组转换为表示16进制值的字符串
            BigInteger number = new BigInteger(1, messageDigest);
            String hashtext = number.toString(16);
            // 补齐前导0
            while (hashtext.length() < 32) {
                hashtext = "0" + hashtext;
            }
            return hashtext.toUpperCase(); // 转换为大写
        } catch (Exception e) {
            throw new BaseException(SystemErrorType.MD5_ERROR);
        }
    }

    /**
     * 生成客户端ID
     *
     * @return
     */
    public static String genClientId() {
        return encryptToMD5(GenUtil.getUUID());
    }

    /**
     * 生成客户端秘钥
     *
     * @return
     */
    public static String genClientSecret() {
        return encryptToMD5(GenUtil.getUUID());
    }
}
